<?php
namespace app\index\service;

use think\facade\Log;
use think\queue\Job;
use app\index\service\WeChatService;
class TestQueue
{
    public function fire(Job $job, $data)
    {
        $isJobDone = $this->testJob($data);
        // 如果任务执行成功后 记得删除任务，不然这个任务会重复执行，直到达到最大重试次数后失败后，执行failed方法
        if ($isJobDone) {
            $job->delete();
        } else {
            //通过这个方法可以检查这个任务已经重试了几次了
            $attempts = $job->attempts();
            echo $attempts;
            if ($attempts == 0) {
                // 重新发布这个任务
                $job->release(1); //$delay为延迟时间
            }
            $job->delete();
        }
    }

    /**
     * @Desc: 任务执行失败后自动执行方法
     * @param $data
     */
    public function failed($data)
    {
        // ...任务达到最大重试次数后，失败了
        Log::error('任务达到最大重试次数后，失败了 '.json_encode($data));
    }

    /**
     * @Desc: 自定义需要加入的队列任务
     */
    private function testJob($data)
    {
        $w =new WeChatService($data);
        if($data['app_id'] == "wx707275aa364d343f"){
            //龙城的发送
            $res = $w->pushlc($data);
            echo($res);
        }else if($data['app_id'] == "wx7316676cbe8e5c4b"){
            //方克的的发送
            $res = $w->push($data);
            echo($res);
        }else if($data['app_id'] == "wxe0bb949bb097b477"){
            //关二的发送
            $res = $w->pushlcG2($data);
            echo($res);
        }
       
        $date = date('Y-m-d H:i:s');
        if($res){
            echo($date.$data['name']."发送成功！");
            unset($w);
            unset($res);
            return true;
        }else{
            echo($date.$data['name']."发送失败!");
            unset($w);
            unset($res);
            return false;
        }
    }

    
}